package com.aote.expression.occasion;

import java.util.Iterator;
import java.util.Map;

import org.w3c.dom.Element;

import com.browsesoft.Tools;
import com.browsesoft.baseadapter.AdvancedSimpleEntity;
import com.browsesoft.htmlcomponent.HTMLBasicComponent;

/**
 * 根据模板上指明的依赖关系，看依赖属性是否发生变化，如果变化，则计算。 只能在高级简单实体上工作。
 */
public class DependOccasion implements OccasionCondition {
	public boolean isFit(Map attrs, String name, Element elem,
			HTMLBasicComponent component) {
		AdvancedSimpleEntity entity = (AdvancedSimpleEntity) component
				.getModel();
		// 得到依赖字段，依赖字段可以有多个，用“，”分隔
		String depends = elem.getAttribute("depends");
		// 对于每一个依赖字段
		Iterator iter = Tools.stringToLinkedList(depends).iterator();
		while (iter.hasNext()) {
			String dname = (String) iter.next();
			// 如果发生了变化，返回需要计算
			if (entity.isChanged(entity.getAttributes(), entity.getOldAttrs(),
					dname)) {
				return true;
			}
		}
		return false;
	}
}
